package agenda;

import java.io.Serializable;

/**
 * Classe representativa de uma pessoa
 * 
 * @author emerson borges - emerson.borges@ccc.ufcg.edu.br
 * @author rafael lima - rafael.ufcg10@gmail.com
 */
public abstract class Pessoa implements Serializable {

	private static final long serialVersionUID = 2870752005585574879L;
	private String nome;

	/**
	 * Construtor default de pessoa
	 */
	public Pessoa() {
		this.nome = "";
	}

	/**
	 * Construtor de uma pessoa
	 * 
	 * @param nome
	 * @throws Exception
	 */
	public Pessoa(String nome) throws Exception {
		if (nome.equals(null)) {
			throw new Exception("Nome n�o pode ser nulo.");
		} else if (nome.equals("")) {
			throw new Exception("Nome n�o pode ser vazio.");
		}
		this.nome = nome;
	}

	/**
	 * Metodo para acessar o nome de uma Pessoa
	 * 
	 * @return
	 */
	public String getNome() {
		return nome;
	}

	/**
	 * Metodo para modificar o nome de uma pessoa
	 * 
	 * @param nome
	 */
	public void setNome(String nome) {
		this.nome = nome;
	}

	@Override
	public String toString() {
		return String.format("%s", getNome());
	}

	public abstract boolean equals(Object obj);

}
